#!/usr/bin/perl
# RUS: Если в базе поработал пользователь с ip которого теперь нет, то хорошо бы удалить все его пометки "прочитано","принял","сбросил", т.к. они мешаютю
# Или если у пользователя поменялся ip-адрес, хорошо бы перенести все его пометки на новый ip в базе
# Скрипт некак не трогает таблицу ips. ips - это соответствие: { ip | имя_пользователя_en | имя рус.} 
# EN: Change all 1-st ip to 2-nd ip in all database tables


# Usage:
# cd ./scripts 
# Syntax: change_ip <ip_from>|all <ip_to>|delete
# Samples:
# change_ip 127.0.0.1 192.168.10.37
# or
# change_ip 127.0.0.1 delete
# or
# change_ip all delete
# or 
# change_ip all 127.0.0.1
use strict;

my $sqlite = "sqlite3";
my $db = "../db_sqlite.db";

my ( $from_ip, $to_ip ) = @ARGV;
die "Usage: change_ip ip_from|'all' ip_to|'delete'" if !$from_ip or !$to_ip;
for ( $from_ip, $to_ip ){
    next if /delete|reset|all/i;
    next if /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/;
    
    die "$_ most be a ip-address";
}

if ( lc $from_ip eq "all" and lc $to_ip eq "delete" ){ # все сбросить
    print `$sqlite $db  "DELETE FROM news_ips_read"`;
    print `$sqlite $db "UPDATE news SET who_take=''"`;
    print `$sqlite $db "UPDATE news SET who_reject=''"`;
}
elsif ( lc $from_ip eq "all" and lc $to_ip ne "delete" ){ # все непустые заменить на др ip
    print `$sqlite $db  "UPDATE news_ips_read SET ip='$to_ip' "`;
    print `$sqlite $db "UPDATE news SET who_take='$to_ip' WHERE who_take!=''"`;
    print `$sqlite $db "UPDATE news SET who_reject='$to_ip' WHERE who_reject!=''"`;    
}
elsif ( lc $from_ip ne "all" and lc $to_ip eq "delete" ){ # ip -> сбросить
    print `$sqlite $db  "DELETE FROM news_ips_read WHERE ip='$from_ip'"`;
    print `$sqlite $db "UPDATE news SET who_take='' WHERE who_take='$from_ip'"`;
    print `$sqlite $db "UPDATE news SET who_reject='' WHERE who_reject='$from_ip'"`;
}
elsif ( lc $from_ip ne "all" and lc $to_ip ne "delete" ){ # ip на ip
    print `$sqlite $db  "UPDATE news_ips_read SET ip='$to_ip' WHERE ip='$from_ip'"`;
    print `$sqlite $db "UPDATE news SET who_take='$to_ip' WHERE who_take='$from_ip'"`;
    print `$sqlite $db "UPDATE news SET who_reject='$to_ip' WHERE who_reject='$from_ip'"`;
}


